]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Don't rely on implicit type conversion in the scroll view shader
authorNeil Roberts <neil@linux.intel.com>
Thu, 7 Feb 2013 15:55:16 +0000 (15:55 +0000)
committerNeil Roberts <neil@linux.intel.com>
Fri, 8 Feb 2013 12:03:38 +0000 (12:03 +0000)
Before version 1.2 of GLSL it would not implicitly convert from int to
float which meant that if you compare a float variable with an integer
constant it will generate a compile error. In particular this means
that on GLES2 (which uses GLSL 1.0) the scroll view shader will not
compile on pedantic compilers, which includes Mesa. This patch just
changes it to use floating point constants.

https://bugzilla.gnome.org/show_bug.cgi?id=693339

src/st/st-scroll-view-fade.glsl

index 4e8ec6a1f88e33a94ad596bfdf2ca37305512f99..6acd260006894410614882a032a9ab6908cba24f 100644 (file)
@@ -41,7 +41,7 @@ uniform mat2 fade_area;
  * changing it to scaling [1.0, 0.0] to [0.0, 0.0]
  * and then transforming the end result.
  */
-#define FADE(gradient, factor) (1 - (1 - gradient) * factor)
+#define FADE(gradient, factor) (1.0 - (1.0 - gradient) * factor)
 
 void main ()
 {
@@ -57,10 +57,10 @@ void main ()
     float ratio = 1.0;
     float fade_bottom_start = fade_area[1][1] - vfade_offset;
     float fade_right_start = fade_area[1][0] - hfade_offset;
-    bool fade_top = y < vfade_offset && vvalue > 0;
-    bool fade_bottom = y > fade_bottom_start && vvalue < 1;
-    bool fade_left = x < hfade_offset && hvalue > 0;
-    bool fade_right = x > fade_right_start && hvalue < 1;
+    bool fade_top = y < vfade_offset && vvalue > 0.0;
+    bool fade_bottom = y > fade_bottom_start && vvalue < 1.0;
+    bool fade_left = x < hfade_offset && hvalue > 0.0;
+    bool fade_right = x > fade_right_start && hvalue < 1.0;
 
     float vfade_scale = height / vfade_offset;
     if (fade_top) {